// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../SQLStatementImpl.h"

class SQLCloneTableStatement : virtual public SQLStatementImpl
{
public:
  SQLExprTableSource_ptr from;

  SQLAssignItem_list_ptr partitions;

  SQLExprTableSource_ptr to;

  BOOL_ptr ifExistsOverwrite;
  BOOL_ptr ifExistsIgnore;

  SQLCloneTableStatement();

  SQLCloneTableStatement(SQLExpr_ptr to);
  SHAREDOBJECT(SQLCloneTableStatement);

  SQLExprTableSource_ptr getTo();

  void setTo(SQLExprTableSource_ptr to);

  void setTo(SQLExpr_ptr to);

  SQLAssignItem_list_ptr getPartitions();

  SQLName_ptr getToName();

  SQLExprTableSource_ptr getFrom();

  void setFrom(SQLExprTableSource_ptr x);

  void setFrom(SQLName_ptr x);

  BOOL_ptr isIfExistsOverwrite();

  void setIfExistsOverwrite(BOOL_ptr ifExistsOverwrite);

  BOOL_ptr isIfExistsIgnore();

  void setIfExistsIgnore(BOOL_ptr ifExistsIgnore);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);
};
